#include "Robot.h"
#include "Etat.h"
#include "Fige.h"

/**
 * avance le robot
 */
void Robot::avancer(Position &p)
{
	etatCourant->avancer(p);
	this->notifierChangementPosition(p);
}


/**
 * tourne le robot
 */
void Robot::tourner(Direction &direction)
{
	etatCourant->tourner(direction);
	this->notifierChangementDirection(direction);
}


/**
 * saisi un objet
 */
void Robot::saisir()
{
	etatCourant->saisir();
	this->notifierSaisirObjet();
}


/**
 * pose un objet
 */
void Robot::poser()
{
	etatCourant->poser();
	this->notifierDepotObjet();
}


/**
 * pese un objet
 */
void Robot::peserObjet()
{
	etatCourant->peserObjet();
	this->notifierPeserObjet();
}


/**
 * evalue un objet
 */
void Robot::evaluerObstacle()
{
	etatCourant->evaluerObstacle();
	this->notifierEvaluerObstacle();
}


/**
 * arrete le robot
 */
void Robot::arreter()
{
	etatCourant->arreter();
	this->notifierArreter();
}


/**
 * fait repartir le robot
 */
void Robot::repartir()
{
	etatCourant->repartir();
	this->notifierRepartir();
}


/**
 * change l'etat du robot
 */
void Robot::changerEtat(std::string nom)
{
	etatCourant = Etat::getEtat(nom);
	this->notifierChangementEtat(nom);
}
